Amazon Location Service の 5 種類のリソースが AWS CDK の Alpha module で実装可能になりました
こんにちは、製造ビジネステクノロジー部の若槻です。
Amazon Location Service は、地理空間データと位置情報を利用した機能をアプリケーションに簡単に追加できる AWS サービスです。
Amazon Location Service では主に以下の 5 種類のリソースを管理して利用します。
- Map
- PlaceIndex
- RouteCalculator
- GeofenceCollection
- Tracker
そして最近リリースされた AWS CDK v2.169.0 では、Alpha module において Map がサポートされ、上記の 5 種類すべてのリソースが L2 コンストラクトで実装可能になりました。
今回は AWS CDK の Alpha module で Amazon Location Service のリソースの実装を試してみました。
試してみた
CDK パッケージのアップデート
Alpha Module を含めた AWS CDK モジュールを v2.169.0 以降にアップデートします。
npm i -D @aws-cdk/aws-location-alpha@latest aws-cdk-lib@latest aws-cdk@latest
CDK 実装
今回行った AWS CDK の実装コードは下記のようになります。
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as location from '@aws-cdk/aws-location-alpha';
export class MainStack extends cdk.Stack {
constructor(scope: Construct, id: string) {
super(scope, id);
/**
* Map
*/
new location.Map(this, 'Map', {
style: location.Style.VECTOR_ESRI_NAVIGATION,
customLayers: [location.CustomLayer.POI],
politicalView: location.PoliticalView.INDIA, // 既定は NONE
});
/**
* PlaceIndex
*/
new location.PlaceIndex(this, 'PlaceIndex', {
dataSource: location.DataSource.HERE, // 既定は Esri
intendedUse: location.IntendedUse.STORAGE, // 既定は SINGLE_USE
});
/**
* RouteCalculator
*/
new location.RouteCalculator(this, 'RouteCalculator', {
dataSource: location.DataSource.ESRI,
});
/**
* GeofenceCollection
*/
const geofenceCollection = new location.GeofenceCollection(
this,
'GeofenceCollection',
{
// kmsKey: key, // 既定は AWS managed key
}
);
/**
* Tracker
*/
new location.Tracker(this, 'Tracker', {
geofenceCollections: [geofenceCollection],
eventBridgeEnabled: true, // 既定は false
positionFiltering: location.PositionFiltering.DISTANCE_BASED, // 既定は TIME_BASED
// kmsKey: key, // 既定は AWS managed key
// kmsKeyEnableGeospatialQueries: true, // 既定は false。kmsKey が指定されている場合のみ使用可能
});
}
}
上記実装を CDK デプロイして作成します。
作成されたリソースの確認
デプロイにより作成されたリソースをマネジメントコンソールから確認してみます。
Map
Map はアプリケーションなどに埋め込む地図を提供するリソースです。
指定したマップスタイル(VectorEsriNavigation)、カスタムレイヤーズ(POI)、ポリティカルビュー(India)が設定された Map が作成されています。
POI (Point of Interest) レイヤーが追加されていると、マップ上に施設や店、観光地などの地理情報が追加で表示されるようになります。
またポリティカルビューを使用すると、領土紛争がある地域を地図上でどの政治観点で表示するかを指定することができます。
PlaceIndex
PlaceIndex は地名や施設名の検索やジオコーディング、リバースジオコーディングを行うための API を提供するリソースです。
指定したデータソース(Here)および Intended use が設定された PlaceIndex が作成されています。
Intended use は位置情報の検索結果データの保存方法を指定するプロパティで、結果データを一時的にのみ使用するため保存しない場合は SingleUse
、キャッシュや分析のために保存したい場合は Storage
を指定します。
RouteCalculator
RouteCalculator は Route とも呼ばれ、ルート検索や経路計算を行うための API を提供するリソースです。
指定したデータソース(Esri)が設定された RouteCalculator が作成されています。
GeofenceCollection
GeofenceCollection は Map 上の仮想的な境界線の定義である Geofences をセットとして管理するためのリソースです。後述の Tracker が境界を超えた際にイベントを発行することができます。
CDK により作成された GeofenceCollection です。Geofences の作成は Alpha Module ではまだサポートされておらず、手動で追加するか L1 コンストラクトで実装する必要があります。
Tracker
Tracker はデバイスの位置情報の更新を管理するリソースです。
CDK により 作成された Tracker です。先程の GeofenceCollection が紐づけられています。
また境界を超えた際に EventBridge によるイベントを発行する設定と、位置情報のフィルタリング方法(距離ベース)が設定されています。
Tracker と EventBridge の連携については下記も合わせてご参照ください。
おわりに
Amazon Location Service の 5 種類のリソースが AWS CDK の Alpha module で実装可能になったので共有しました。
以前にも Amazon Location Service のリソースを CDK で実装する方法について記事を書いたことがあったのですが、その際は L1 Construct を使用していたのでリソース名の自動命名ができないなど不便な点がありましたが、Alpha module ではそれも解消されていてより使いやすくなりました。
地理空間データや位置情報を活用したアプリケーションを開発する際に Amazon Location Service がますます選択肢としやすくなったのではないでしょうか。
以上